// 用户信息上传
// 用户数据请求设置
const Router = require('koa-router')
const router = new Router()
const UserBasic = require('../../modules/userbasic').UserBasic // 用户基础信息数据库操作模板
const ProjectItem = require('../../modules/userbasic').ProjectItem // 用户项目模板数据库操作模板
const User = require('../../modules/User').User // 用户数据库操作模板

// 简介存储
router.post('/post', async ctx => {
  // 接收前端传过来的数据，根据用户id关联数据
  const mybody = ctx.request.body
  const uid = mybody.uid // 获取用户id
  // 存储前，先验证id，用户是否存在。存在再去存储数据。进行下一步
  // 查找用户名，判断用户是否存在
  const findResult = await User.find({ // find会查出该条数据的所有数据
    id: uid
  })
  // 如果用户不存在，发送错误信息
  if(findResult.length < 0) {
    ctx.body = {
      code: 0,
      msg: '用户名不存'
    }
  } else {
    // id自增设置
    let date = new Date().getTime() + ''
    let dlength = date.length // 字符串才能获取长度length
    let udate = date.slice(dlength - 3,dlength) // 截取后三位
    const uid = await UserBasic.find().estimatedDocumentCount() // 获取数据表长度，根据数据表程度设置id。注意，一开始没数据库时，这个方法无法自己动创建数据库，所以无数据时会报错
    mybody['bid'] = uid - 1 + '' + udate  // 为了唯一性，可添加自定义规则来保持id唯一，哪怕是删除一项也是唯一。
    const user = new UserBasic(
      mybody
    )
    // 保存数据
    await user.save().then(res => {
      console.log(res)
      ctx.body = {
        code: 1,
        msg: '添加成功',
      }
    }).catch(erro => { // 不满足规则，没填字段的输出错误代码，验证规则在模板中
      console.log(erro)
      ctx.body = {
        code: 0,
        msg: '请填写必填项',
      }
    })
  }
})



// 项目数据存储
router.post('/project', async ctx => {
  // 接收前端传过来的数据，根据用户id关联数据
  const mybody = ctx.request.body
  const uid = mybody.uid // 获取用户id
  // 存储前，先验证id，用户是否存在。存在再去存储数据。进行下一步
  // 查找用户名，判断用户是否存在
  const findResult = await User.find({
    id: uid
  })
  // 如果用户不存在，发送错误信息
  if(findResult.length < 0) {
    ctx.body = {
      code: 0,
      msg: '用户名不存'
    }
  } else {
    // 此处应查表，看用户信息表中是否已存在此用户的信息，一个用户对应一个信息，不能多次存储
    // id自增设置
    let date = new Date().getTime() + ''
    let dlength = date.length // 字符串才能获取长度length
    let udate = date.slice(dlength - 3,dlength) // 截取后三位
    const uid = await UserBasic.find().estimatedDocumentCount() // 获取数据表长度，根据数据表程度设置id。注意，一开始没数据库时，这个方法无法自己动创建数据库，所以无数据时会报错
    mybody['bid'] = uid - 1 + '' + udate  // 为了唯一性，可添加自定义规则来保持id唯一，哪怕是删除一项也是唯一。
    const user = new ProjectItem(
      mybody
    )
    // 保存数据
    await user.save().then(res => {
      console.log(res)
      ctx.body = {
        code: 1,
        msg: '添加成功',
      }
    }).catch(erro => { // 不满足规则，没填字段的输出错误代码，验证规则在模板中
      console.log(erro)
      ctx.body = {
        code: 0,
        msg: '请填写必填项',
      }
    })
  }
})

// 获取数据

// 获取用户信息
router.post('/get_userbasic', async ctx => {
   // 接收前端传过来的数据，根据用户id关联数据
   const mybody = ctx.request.body
   const uid = mybody.uid // 获取用户id
   // 存储前，先验证id，用户是否存在。存在再去存储数据。进行下一步
   // 根据uid查找用户数据
   const findResult = await UserBasic.find({
     uid: uid
   })
   // 如果用户不存在，发送错误信息
   if(findResult.length < 0) {
     ctx.body = {
       code: 0,
       msg: '用户名不存'
     }
   } else { // 查询数据，返回用户数据
     console.log(findResult)
     ctx.body = {
       code: 1,
       msg: '数据请求成功',
       data: findResult
     }
   }
})

// 获取项目信息
router.post('/get_projects', async ctx => {
  // 接收前端传过来的数据，根据用户id关联数据
  const mybody = ctx.request.body
  const uid = mybody.pid // 获取项目id
  // 根据uid查找用户数据
  const findResult = await ProjectItem.find({
    pid: pid
  })
  // 如果用户不存在，发送错误信息
  if(findResult.length < 0) {
    ctx.body = {
      code: 0,
      msg: '用户项目不存在'
    }
  } else { // 查询数据，返回用户数据
    ctx.body = {
      code: 1,
      msg: '数据请求成功',
      data: findResult
    }
  }
})

// 获取用户列表
router.get('/get_userbasic_list', async ctx => {
  const findResult = await UserBasic.find()
  // 如果用户不存在，发送错误信息
  if(findResult.length < 0) {
    ctx.body = {
      code: 0,
      msg: '用户不存在'
    }
  } else { // 查询数据，返回用户数据
    ctx.body = {
      code: 1,
      msg: '数据请求成功',
      data: findResult
    }
  }
})

// 获取项目列表
router.post('/get_projects', async ctx => {
  // 接收前端传过来的数据，根据用户id关联数据
  const mybody = ctx.request.body
  const uid = mybody.uid // 获取用户id
  // 存储前，先验证id，用户是否存在。存在再去存储数据。进行下一步
  // 根据uid查找用户数据
  const findResult = await ProjectItem.find({
    uid: uid
  })
  // 如果用户不存在，发送错误信息
  if(findResult.length < 0) {
    ctx.body = {
      code: 0,
      msg: '用户名不存'
    }
  } else { // 查询数据，返回用户数据
    ctx.body = {
      code: 1,
      msg: '数据请求成功',
      data: findResult
    }
  }
})

module.exports = router.routes()